/**
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 2010  Sean Beecroft

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

 * @version 1.10 2010-01-01
 * @author Sean Beecroft
 */
package yawiki.server.template;

import java.util.Enumeration;
import java.util.Hashtable;

import yawiki.server.util.StringUtility;

public class Template {

    Hashtable symtab = new Hashtable();
    String buffer = "";

    public Template(String template) {
        buffer = template;
    }

    public void registerSymbol(String symbol, String value) {
        symtab.put(symbol, value);
    }

    public String resolveSymbols(String buf) {
        Enumeration e = symtab.keys();
        while (e.hasMoreElements()) {
            try {
                String key = (String) e.nextElement();
                String value = (String) symtab.get(key);
                if (value != null) {
                    try {
                        Enumeration recurse = symtab.keys();
                        while (recurse.hasMoreElements()) {
                            String k = (String) recurse.nextElement();
                            String v = (String) symtab.get(k);
                            value = StringUtility.replace(value, k, v);
                        }
                        buf = StringUtility.replace(buf, key, value);
                    } catch (Exception ex) {
                        System.out.println("Search and replace:" + ex);
                    }
                }
            } catch (Exception ex) {
                System.out.println("resolveSymbols: Exception:" + ex);
            }
        }
        return buf;
    }

    public void clearSymtab() {
        symtab = new Hashtable();
    }

    public String getBuffer() {
        return buffer;
    }
}

